1. Technical Field
The present invention generally relates to a method, apparatus, and computer program for a testing protocol in a computer system. More specifically, the invention relates to testing the functionality of the connections in a system having a large number of multiprocessors connected by fabric bus.
2. Description of Related Art
Large multiprocessing systems are commonly formed of interconnected systems of processors, associated caches, and communication devices, which must maintain coherency of information being processed by the system. These multiprocessing systems often utilize a bus-snooping protocol in which all caches monitor (or snoop) the bus to determine if they have a copy of a block of data that is being requested. Every cache has a copy of the sharing status of every block of physical memory it has. Multiple copies of a document can be read without any coherence problems; however, a processor must have exclusive access in order to write. When a processor wishes to write data, that processor will send specific messages to the other processors, depending on the protocol used. These messages can cause copies of the data in the caches of all other processors in the system to be rendered invalid, or else the messages broadcast the new data over the bus, causing the other caches that contain copies of the data to be updated.
In past systems, multiprocessors have generally been connected in a ring structure, such as that shown in FIG. 1. This figure shows a multiprocessing system 100 containing eight processing units 102-116. Each processing unit is directly connected only to the two processing units on either side of it in the ring, so that processing unit 102 is directly connected to processing units 104 and 116; processing unit 104 is connected to processing units 102 and 106; etc. In such a system, a snooping request will be passed from one processing unit to another around the ring, so that by the time it returns to the originating processing unit, it is clear that every processing unit in the system has been contacted. As the number of processing unit increases, however, such a process becomes too lengthy to be practical, so that new types of interconnections have evolved. One such type of interconnection is called a multi-tier bus or fabric bus. In a fabric bus system, each bus connects only two processing units, but each processing unit may be connected to a number of other processing units by separate busses. In such a system, the number of connections themselves becomes very large. Additionally, a single bad connection between two processors is significant, because it can allow data coherence to fail. However, the problem is not easily determined, since there is no single path between processing units that will test all connections. It would be desirable to have a system and method that can determine that all connections are operating correctly.